package object;

import java.util.Scanner;

/**
 *测试重写Object的toString方法与equals方法
 */
public class Demo {
    public static void main(String[] args) {
        Point p = new Point(1,2);
        /*
        String toString()方法是Object定义的方法
        该方法的作用是当前对象转换为一个字符串，Object的默认实现中该方法返回的
        是这个对象的地址信息，格式为：类名@地址
         */
        String str = p.toString();
        System.out.println(p);
        /*向控制台输出p对象
          System.out.println(Object o);
        向控制台输出一个对象时，该方法会输出该对象toString方法返回的字符串
         */
        System.out.println(p);    //object.Point@1b6d3586

/**
 * 在进行字符串连接时，会将非字符串的对象内容转换为字符串，此时会调用toString
 * 方法将其转义为字符串。
 */
        String line ="对象内容："+p;
        System.out.println(line);

        /**
         * Object定义另一个常被子类重写的方法：equals
         * 该方法的作用是判断两个同类型的实例之间的内容是否相等
         */
        Point p2 = new Point(1,2);
        /*
         * ==为值得比较，比较两个变量的值是否相同
         * 对于引用类型变量而言，保存的是地址，因此
         * ==可以理解为比较两个对象的地址是否相同
         * 这就意味着比较的是它们是否为同一个对象
         */
        System.out.println(p==p2);    //false


        /*
        * equals只在乎值是不是相等
        equals方法并不关心两个对象是否为同一个对象，而是关心两个对象内容是否相同
        Object定义该方法内部使用”==“实现
        因此我们实际应用时应当重写该方法，否则没有实际意义
         */
        System.out.println(p.equals(p2));


    }
}
/*
1、https://gitee.com/   注册用户
2、在苍老师网站git工具
 */